#ifndef CAMERA_H
#define CAMERA_H

#include "Vector3.h"
#include <iostream>


using namespace std;

class Camera{

public:
	Camera();
	Camera(Vec3 zpy, Vec3 dest, Vec3 up, float fov);
	~Camera();
	void MVTransform();
	void PTransform(float ratio);
	void pan(float x, float y);
	void zoom(float factor);
	void rotate(float theta, float phi);
	void forward(float dep);
	void right(float angle);
	void up(float angle);
	void twist(float angle);
	void reset();
	void toggleProjectionMode();
	void fov(float decal);
	Vec3 getPos() {return m_campos;};
	void decal(Vec3 dec);
	Vec3 getZPY(){return m_zpy;};

	Vec3 m_campos;
	Vec3 m_dest_init;
	Vec3 m_pos_init;
	Vec3 m_dest;
	void evalCampos();

private:
	Vec3 m_zpy;
	Vec3 m_up;
	float m_fov;
	bool m_perspective ;
	enum Mode { ORBIT, FLY } navMode ;


};


#endif
